package com.shyroke.service;

import java.io.IOException;
import java.util.List;

import javax.servlet.http.HttpSession;

import com.shyroke.entity.Article;

public interface ArticleServiceI {

	/**
	 * 根据标签id来获取所有可以在首页中显示的文章
	 * @param labelId
	 * @return
	 */
	List<Article> selectShowArticleByLabelId(Integer labelId);

	/**
	 * 根据某个用户id获取所有文章
	 * @param integer 
	 * @return
	 */
	List<Article> selectAll(Integer integer);

	/**
	 * 保存文章
	 * @param article
	 * @param session 
	 * @throws IOException 
	 */
	void insert(Article article, HttpSession session) throws IOException;

	/**
	 * 根据文章id查找文章
	 * @param articleId
	 * @return
	 */
	Article selectById(Integer articleId);

	/**
	 * 根据文章id删除该文章
	 * @param articleId
	 */
	void delById(Integer articleId);

	/**
	 * 保存用户收藏的文章
	 * @param article
	 * @param session
	 */
	void shoucang(Article article, HttpSession session);

	/**
	 * 判断该文章是否原创
	 * @param articleId
	 * @return
	 */
	boolean isYuanChuang(Integer articleId);

	/**
	 * 保存修改的文章
	 * @param article
	 */
	void uptArticle(Article article);

	/**
	 * 根据用户id获取该用户的所有文件夹
	 * @param id
	 * @return
	 */
	List<String> selectWenjianjiaByUserId(Integer id);

	/**
	 * 根据用户id和文件夹查找所有文章
	 * @param id
	 * @param wenjianjia
	 * @return
	 */
	List<Article> selctAllByWenjianjia(Integer id, String wenjianjia);

	/**
	 * 增加数量
	 * @param string 阅读/收藏/评论
	 * @param articleId 
	 */
	void addMount(String string, Integer articleId);

	/**
	 * 查看公开的文章
	 * @param id 用户id
	 * @param wenjianjia 文件夹名
	 * @return
	 */
	List<Article> selctAllByPublicWenjianjia(Integer id, String wenjianjia);

	/**
	 * 获取所有公开的文章
	 * @param id 用户id
	 * @return
	 */
	List<Article> selectAllPublic(Integer id);

	/**
	 * 获取所有未审核的文章
	 * @return
	 */
	List<Article> selectAllNoShenHe();

	/**
	 * 获取所有未审核的文章
	 * @param author 作者名
	 * @return
	 */
	List<Article> selectNoShenHeByAuthor(String author);

	/**
	 * 搜索全站的文章
	 * @param key 文章标题或者文章内容
	 * @return
	 */
	List<Article> selectBySearchTitleAndContent(String key);


	/**
	 * 搜索个人馆藏的文章
	 * @param key 搜索内容
	 * @param id 用户id
	 * @return
	 */
	List<Article> selectMyLibBySearchTitleAndContent(String key, Integer id);

	/**
	 * 保存用户收藏的来自别的站点的文章
	 * @param article
	 * @param session
	 */
	void shoucangByother(Article article, HttpSession session);

	/**
	 * 根据用户id查找该用户所有公开的文章
	 * @param id
	 * @return
	 */
	List<String> selectWenjianjiaByUserIdPublic(Integer id);


}
